// 给你一个整数数组 nums 和一个整数 k ，请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

#include<bits/stdc++.h>
#include<string>
#include<vector>
#include<unordered_set>
#include<unordered_map>
#include<set>
#include<queue>
using namespace std;

// 执行用时：
// 12 ms
// , 在所有 C++ 提交中击败了
// 91.43%
// 的用户
// 内存消耗：
// 13.4 MB
// , 在所有 C++ 提交中击败了
// 26.02%
// 的用户

class Solution {
public:
    vector<int> topKFrequent(vector<int>& nums, int k) {
        unordered_map<int,int> hash;
        for(int i=0;i<nums.size();i++){
            if(hash.count(nums[i])){
                hash[nums[i]]++;
            }
            else{
                hash[nums[i]] = 1;
            }
        }
        vector<pair<int,int>> vec;
        for(auto i:hash){
            vec.push_back(i);
        }
        sort(vec.begin(),vec.end(),[](pair<int,int>& a,pair<int,int>&b){return a.second>b.second;});
        vector<int> res;
        for(int i=0;i<k;i++){
            res.push_back(vec[i].first);
        }
        return res;
    }
};